home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 026a / fsp.zip / FSP.TXT next >
Text File  |  1990-04-12  |  81KB  |  1,739 lines

  1.           
  2.           
  3.           
  4.           
  5.           
  6.           
  7.           
  8.           
  9.           
  10.           
  11.           
  12.           
  13.           
  14.           
  15.           
  16.           
  17.           
  18.           
  19.           
  20.           
  21.           
  22.           
  23.           
  24.           
  25.                                286-Based NetWare v2.1x
  26.                                File Service Processes
  27.           
  28.                                    The Final Word
  29.           
  30.           
  31.           
  32.           
  33.           
  34.           
  35.           
  36.           
  37.           
  38.           
  39.           
  40.           
  41.           
  42.           
  43.           
  44.           
  45.           
  46.           
  47.           
  48.           
  49.           
  50.                             Systems Engineering Division
  51.                                      April 1990
  52.                                     Novell, Inc.
  53.                                  122 East 1700 South
  54.                                   Provo, UT. 84606
  55.           
  56.           
  57.           
  58.           
  59.           
  60.           
  61.           
  62.           
  63.           
  64.           
  65.           Disclaimer
  66.           
  67.           
  68.           Novell Inc. makes no representations or warranties with
  69.           respect to the contents or use of this report, and
  70.           specifically disclaims any express or implied warranties of
  71.           merchantability or fitness for any particular purpose.
  72.           Further, Novell Inc. reserves the right to revise this report
  73.           and to make changes in its content at any time, without
  74.           obligation to notify any person or entity of such revision or
  75.           changes.
  76.           
  77.           
  78.           
  79.           
  80.           
  81.           
  82.           
  83.           
  84.           
  85.           
  86.           
  87.           
  88.           
  89.           
  90.           
  91.           Jason Lamb
  92.           Systems Engineering Division
  93.           April 1990
  94.           Novell, Inc.
  95.           122 East 1700 South
  96.           Provo, UT. 84606
  97.           
  98.           
  99.           
  100.           
  101.           (c) Copyright 1990 by Novell, Inc., Provo, Utah
  102.           
  103.           File Service Processes
  104.           
  105.           All rights reserved. This report may be stored electronically,
  106.           and reproduced for your use, as long as no part of this report
  107.           is omitted or altered. Further, this report, in part or whole,
  108.           may not be reproduced, photocopied, stored in a retrieval
  109.           system, or transmitted, in any form or by any means,
  110.           electronic, mechanical, photocopying, recording, or otherwise,
  111.           for publication of any type, without the express prior written 
  112.           consent of Novell, Inc.
  113.           
  114.           
  115.           
  116.           
  117.           
  118.           Preface
  119.           -------
  120.           
  121.           
  122.           
  123.           The following report is a preliminary excerpt from an upcoming
  124.           Novell Systems Engineering Division Research report entitled
  125.           "NetWare Internals and Structure". The actual report may
  126.           differ slightly from this excerpt, however the content will be
  127.           the same. This particular excerpt provides an in-depth
  128.           explanation of File Service Processes (FSP) under 286-based
  129.           NetWare v2.1x. This includes ELS I and II, Advanced Dedicated,
  130.           Advanced Non-Dedicated, and SFT. Because of the way in which
  131.           FSPs are allocated, the following excerpt will also provide a
  132.           detailed explanation of RAM allocated in the DGroup data
  133.           segment under 286-based NetWare v2.1x.
  134.           
  135.           
  136.           Please note that NetWare 386 incorporates, among other things,
  137.           a completely different memory scheme than 286-based NetWare.
  138.           Due to this fact, none of this discussion of limitations or
  139.           memory segments, apply to NetWare 386.
  140.           
  141.           
  142.           The most evident problem experienced by users, is a shortage
  143.           of File Service Processes. This problem has recently surfaced
  144.           because of two reasons. The first has been the growing
  145.           tendency towards building bigger and more complex server
  146.           configurations. The second has been the addition of
  147.           functionality and features to the NetWare OS. With this
  148.           shortage of FSPs, has come a variety of explanations for this
  149.           problem from both within Novell, and outside of Novell. While
  150.           some of these explanations have provided some partially
  151.           correct answers, this excerpt provides the actual mechanics
  152.           and breakdown of this component of the 286-based NetWare
  153.           operating system.
  154.           
  155.           
  156.           After reading this report you should be able to understand all
  157.           the factors affecting FSP allocation, as well as be able to
  158.           correctly recognize when a server has insufficient FSPs.
  159.           Additionally you will have several options for dealing with
  160.           FSP starved servers.
  161.           
  162.           
  163.           
  164.           
  165.           
  166.           
  167.           
  168.           
  169.           
  170.           
  171.           Page 1             Copyright 1990 by Novell, Inc., Provo, Utah
  172.           
  173.           
  174.           
  175.           
  176.           File Service Processes
  177.           ----------------------
  178.           
  179.           
  180.           A File Service Process is a process running in the NetWare
  181.           Server that services File Service Packets. These are typically
  182.           NetWare Core Protocol (NCP) requests. Workstations, or
  183.           clients, in a NetWare network request services from the File
  184.           Server through NCP requests. When a workstation wants to read
  185.           a file, the NetWare shell builds a packet with the appropriate
  186.           NCP request for reading the correct file, and then sends it
  187.           off to the server.
  188.           
  189.           
  190.           At the server, the NCP request is handed off to a FSP. The FSP
  191.           processes the NCP request. It is the only process running in
  192.           the NetWare server that can process a NCP request. The FSP
  193.           does this in one of two ways. It either processes the request
  194.           directly, or it can schedule additional processes, in order to
  195.           service the request.
  196.           
  197.           
  198.           Because there are various processes with various lengths of
  199.           run time that can be used in the servicing of a workstation's
  200.           NCP request, File Service Processes become a potential
  201.           bottleneck at the server. The following is an example of this:
  202.           
  203.           
  204.           A workstation sends a NCP request that asks that a certain
  205.           block of data be read from the server's disk. The FSP
  206.           servicing the NCP request schedules the appropriate process to
  207.           retrieve the information from the disk, and then instructs
  208.           this disk process to "wake it up", when it has the
  209.           information. The FSP then "goes to sleep" waiting for
  210.           completion of the disk process.
  211.           
  212.           
  213.           If no other FSPs are available to run, then no other NCP
  214.           requests can be processed until this first request is finished
  215.           During this time period, the server is forced to process lower
  216.           priority processes (if any are scheduled to run) until the
  217.           disk request is completed and the FSP returns with another
  218.           request. The server will also delay or ignore any new NCP
  219.           requests that come in during this time period.
  220.           
  221.           
  222.           It should be noted that a FSP will, in all real terms, only go
  223.           to sleep when it waits upon information coming back from a
  224.           disk request. There are typically no other processes in the
  225.           NetWare server that the FSP uses, that would cause the FSP to
  226.           "go to sleep".
  227.           
  228.           
  229.           Page 2             Copyright 1990 by Novell, Inc., Provo, Utah
  230.           
  231.           
  232.           
  233.           
  234.           File Service Processes (continued)
  235.           ----------------------------------
  236.           
  237.           
  238.           
  239.           When a server does not have enough FSPs, typically performance
  240.           will degrade, especially in heavy data movement environments,
  241.           (large file copies, database environments, etc.). The problem
  242.           that is created was depicted in the previous scenario. The
  243.           file server must process the NCP requests in more of a serial
  244.           fashion, rather than a parallel fashion, hence creating a
  245.           longer waiting line for requests.
  246.           
  247.           
  248.           (How many of us have expressed frustration at seeing only one
  249.           bank teller servicing the waiting line, especially on a Friday
  250.           afternoon.)
  251.           
  252.           
  253.           Additionally, because there is only a certain amount of buffer
  254.           space available on a server for incoming packets, packets
  255.           coming in after this buffer space is filled are trashed. The
  256.           workstations must then spend more time resending requests,
  257.           which reduces performance for the workstation and also reduces
  258.           performance for the network due to the increased traffic over
  259.           the cable.
  260.           
  261.           
  262.           However, not all degradation can be attributed to a lack of
  263.           FSPs, even in the aforementioned heavy data movement
  264.           environments. In some instances bad or intermittent NICs,
  265.           either at the server, or at another node, can create the very
  266.           same performance degradations.
  267.           
  268.           
  269.           Before deciding that a network problem is due to FSP
  270.           shortages, you should consult the following FCONSOLE
  271.           statistic:
  272.           
  273.           
  274.           The very first indication of FSP problems is shown under
  275.           FCONSOLE -> LAN I/O Stats -> File Service Used Route. The
  276.           number on this line, is the number of File Service Packets (or
  277.           NCP requests) that had to wait because a FSP was not able to
  278.           service it.
  279.           
  280.           
  281.           Take this number and divide it by the amount of File Service
  282.           Packets (also on this screen), which indicates the number of
  283.           File Service Packets serviced by this server. This ratio
  284.           should be below 1%.
  285.           
  286.           
  287.           Page 3             Copyright 1990 by Novell, Inc., Provo, Utah
  288.           
  289.           
  290.           
  291.           
  292.           File Service Processes (continued)
  293.           ----------------------------------
  294.           
  295.           
  296.           
  297.           
  298.           Care should be taken when using this FCONSOLE diagnostic
  299.           method. The problem is that the File Service Used Route
  300.           counter will roll over easily, especially in a FSP starved
  301.           environment. While it should be easy to see if this number
  302.           counter will turn over for your server (you will be able to
  303.           see the number steadily increasing as you look at it) it's
  304.           still recommended that these numbers be taken several times
  305.           over the course of the day, or several days, to see if there
  306.           are any radical differences in the percentages. It is
  307.           especially useful to do this calculation during heavy
  308.           utilization times on your server. In some instances you might
  309.           not experience FSP starvation until a particular application
  310.           is running or a certain activity takes place.
  311.           
  312.           
  313.           Lastly, in terms of describing FSP usage, and as will be
  314.           explained later in this document, attaching a FSP amount to a
  315.           particular option is inaccurate. For example, saying that a
  316.           certain LAN board "takes up 2 FSPs" is inaccurate. What one
  317.           server's FSP allocation is like can be radically different
  318.           from another's. The most accurate information that can be
  319.           given for server options, is in DGroup bytes used, not FSPs.
  320.           
  321.           
  322.           
  323.           
  324.           
  325.           
  326.           
  327.           
  328.           
  329.           
  330.           
  331.           
  332.           
  333.           
  334.           
  335.           
  336.           
  337.           
  338.           
  339.           
  340.           
  341.           
  342.           
  343.           
  344.           
  345.           Page 4             Copyright 1990 by Novell, Inc., Provo, Utah
  346.           
  347.           
  348.           
  349.           
  350.           DGroup Data Segment
  351.           -------------------
  352.           
  353.           
  354.           
  355.           
  356.           The DGroup data segment is the most important segment of
  357.           memory for the NetWare Operating System. It consists of a
  358.           single 64K block of RAM, which cannot be changed due to the
  359.           way in which pre-80386 Intel microprocessors segment RAM into
  360.           64K blocks. This 64K block of RAM exists (and is required in
  361.           order for the Server to even operate) in the smallest of
  362.           server configurations, as well as the largest. Adding or
  363.           removing RAM does not affect this block at all. (Indeed this
  364.           is RAM that is part of the "Minimum RAM required"
  365.           specification of the NetWare OS.)
  366.           
  367.           
  368.           The DGroup data segment contains various integral components
  369.           which serve as the heart of the NetWare OS. Briefly these
  370.           components are, the Global Static Data area, the Process Stack
  371.           area, the Volume and Monitor Table area, Dynamic Memory Pool
  372.           1, and the File Service Process Buffer area. The reasons that
  373.           these components all reside within this 64K data segment are
  374.           mostly for performance advantages. In past versions of
  375.           NetWare, some components were removed from the DGroup Data
  376.           segment in order to accommodate increased functionality as it
  377.           was added to the OS. However, further removal of components
  378.           from this area with the current version of the OS would
  379.           necessitate major changes.
  380.           
  381.           
  382.           The Global Static Data area contains all the global variables
  383.           defined in the NetWare OS. This area also contains all of the
  384.           global variables defined by the LAN and disk, (or VADD),
  385.           drivers.
  386.           
  387.           
  388.           The Process stacks area provides stack space for all of the
  389.           various NetWare processes.
  390.           
  391.           
  392.           The Volume and Monitor tables contain information for the
  393.           Monitor screen of the file server, as well as information on
  394.           all of the disk volumes mounted on the server.
  395.           
  396.           
  397.           Dynamic Memory Pool 1 is used by virtually all NetWare
  398.           processes and routines as either temporary or semi-permanent
  399.           workspace.
  400.           
  401.           
  402.           
  403.           Page 5             Copyright 1990 by Novell, Inc., Provo, Utah
  404.           
  405.           
  406.           
  407.           
  408.           DGroup Data Segment (continued)
  409.           -------------------------------
  410.           
  411.           
  412.           
  413.           
  414.           The File Service Process Buffers are the buffers where
  415.           incoming File Service Packets are placed. An interesting side
  416.           note is that File Service Processes are not a part of DGroup
  417.           itself. However, the number of File Service Process Buffers
  418.           directly determine how many File Service Processes are
  419.           allocated.
  420.           
  421.           
  422.           The following graphic illustrates the five components and
  423.           their minimum to maximum RAM allocation:
  424.           
  425.           
  426.        |===============================================================|
  427.        |                                                               |
  428.        |  Global Static Data:                             28-40 KB     |
  429.        |                                                               |
  430.        |===============================================================|
  431.        |                                                               |
  432.        |  Process Stacks:                                 7-11 KB      |
  433.        |                                                               |
  434.        |===============================================================|
  435.        |                                                               |
  436.        |  Volume & Monitor Tables:                        1-12 KB      |
  437.        |                                                               |
  438.        |===============================================================|
  439.        |                                                               |
  440.        |  Dynamic Memory Pool 1:                          16-21 KB     |
  441.        |                                                               |
  442.        |===============================================================|
  443.        |                                                               |
  444.        |  File Service Process Buffers:                   2-12 KB      |
  445.        |                                                               |
  446.        |===============================================================|
  447.           
  448.           
  449.           
  450.           The following portion of the report will go into more detail
  451.           on each one of these DGroup components.
  452.           
  453.           
  454.           
  455.           
  456.           
  457.           
  458.           
  459.           
  460.           
  461.           Page 6             Copyright 1990 by Novell, Inc., Provo, Utah
  462.           
  463.           
  464.           
  465.           
  466.        |===============================================================|
  467.        |                                                               |
  468.        |  Global Static Data:                             28-40 KB     |
  469.        |                                                               |
  470.        |===============================================================|
  471.           
  472.           
  473.           
  474.           
  475.           The Global Static Data Area is typically the largest single
  476.           segment of DGroup allocated.
  477.           
  478.           
  479.           The Global Static Data Area contains all of the global
  480.           variables defined by the operating system code. This number
  481.           has increased with not only each successive version of the OS,
  482.           but for most revisions as well. A table of OS DGroup
  483.           allocation is included for comparison.
  484.           
  485.           
  486.           This area also contains all of the global variables defined in
  487.           both the NetWare NIC Drivers and the Disk drivers. Tables for
  488.           disk and NIC Driver DGroup allocations are also included.
  489.           
  490.           
  491.           When loading multiple NIC Drivers, the variables are allocated
  492.           in DGroup once for each NIC Driver. If the same NIC Driver is
  493.           loaded twice, then the variables are allocated twice. For
  494.           example if you configure two NE2000s into the OS, then the
  495.           DGroup allocation is 812 bytes, (2 times 406 bytes).
  496.           
  497.           
  498.           When loading multiple Disk drivers, the variables are also
  499.           allocated in DGroup once for each Disk driver. However, if the
  500.           same Disk driver is loaded multiple times, the variables are
  501.           still only allocated once. For example if you configure the
  502.           ISA disk driver and the Novell DCB driver into the OS, then
  503.           the DGroup allocation is 292 plus 783, or 1075 bytes. However
  504.           is you configure two Novell DCBs into the OS, then the DGroup
  505.           allocation is only 783, and not 1566 bytes.
  506.           
  507.           
  508.           The only user configurable options for this component of
  509.           DGroup are what types and how many NIC and Disk drivers, will
  510.           be loaded into the OS.
  511.           
  512.           
  513.           
  514.           
  515.           
  516.           
  517.           
  518.           
  519.           Page 7             Copyright 1990 by Novell, Inc., Provo, Utah
  520.           
  521.           
  522.           
  523.           
  524.           Operating System and Disk Driver DGroup Allocation Tables
  525.           ---------------------------------------------------------
  526.           
  527.           
  528.           
  529.        |===============================================================|
  530.        |                                                               |
  531.        |                       Operating System                        |
  532.        |                                                               |
  533.        |===============================================================|
  534.        |                                                               |
  535.        |                                                  DGroup       |
  536.        |    Operating System                            Allocation     |
  537.        |                                                               |
  538.        |===============================================================|
  539.        |                                                               |
  540.        | Advanced NetWare v2.15                        28,454 Bytes    |
  541.        | Advanced NetWare v2.15 (Non-Dedicated)        28,518 Bytes    |
  542.        | SFT NetWare v2.15                             28,444 Bytes    |
  543.        | SFT with TTS NetWare v2.15                    28,596 Bytes    |
  544.        | Advanced NetWare v2.15c                       28,466 Bytes    |
  545.        | Advanced NetWare v2.15c (Non-Dedicated)       28,530 Bytes    |
  546.        | SFT NetWare v2.15c                            28,466 Bytes    |
  547.        | SFT with TTS NetWare v2.15c                   28,608 Bytes    |
  548.        |                                                               |
  549.        |===============================================================|
  550.           
  551.           
  552.           
  553.        |===============================================================|
  554.        |                                                               |
  555.        |                          Disk Drivers                         |
  556.        |                                                               |
  557.        |===============================================================|
  558.        |                                                               |
  559.        |                                                 DGroup        |
  560.        |    Disk Drivers                               Allocation      |
  561.        |                                                               |
  562.        |===============================================================|
  563.        |                                                               |
  564.        | IBM AT hard disk controller                   170 Bytes       |
  565.        | Novell Disk CoProcessor - AT                  783 Bytes       |
  566.        | IBM PS/2 Model 30 286 MFM                     138 Bytes       |
  567.        | IBM PS/2 MFM disk controller                  152 Bytes       |
  568.        | IBM PS/2 ESDI disk controller                 180 Bytes       |
  569.        | Industry Standard ISA or AT Controller        292 Bytes       |
  570.        |                                                               |
  571.        |===============================================================|
  572.           
  573.           
  574.           
  575.           
  576.           
  577.           Page 8             Copyright 1990 by Novell, Inc., Provo, Utah
  578.           
  579.           
  580.           
  581.           
  582.           NIC Driver DGroup Allocation Table
  583.           ----------------------------------
  584.           
  585.           
  586.        |===============================================================|
  587.        |                                                               |
  588.        |                  NIC Driver DGroup Allocation                 |
  589.        |                                                               |
  590.        |===============================================================|
  591.        |                                               DGroup          |
  592.        |     NIC Driver                              Allocation        |
  593.        |===============================================================|
  594.        | Ethernet                                                      |
  595.        | Novell Ethernet NE1000                      301 Bytes         |
  596.        | Novell Ethernet NE2000                      406 Bytes         |
  597.        | Novell Ethernet NE/2                        356 Bytes         |
  598.        | Novell Ethernet NE2000 W/AppleTalk          881 Bytes         |
  599.        | Novell Ethernet NE/2 W/AppleTalk            837 Bytes         |
  600.        | Micom-Interlan NP600                        243 Bytes         |
  601.        | 3Com 3C501 EtherLink                        403 Bytes         |
  602.        | 3Com 3C505 EtherLink Plus (2012)            405 Bytes         |
  603.        | 3Com 3C505 EtherLink Plus (1194)            573 Bytes         |
  604.        | 3Com 3C505 Etherlink Plus W/AppleTalk       798 Bytes         |
  605.        | 3Com 3C503 EtherLink II                     388 Bytes         |
  606.        | 3Com 3C523 EtherLink/MC                     258 Bytes         |
  607.        |===============================================================|
  608.        | Token Ring                                                    |
  609.        | IBM Token-Ring                              644 Bytes         |
  610.        | IBM Token-Ring Source Routing              3920 Bytes         |
  611.        |===============================================================|
  612.        | Arcnet                                                        |
  613.        | Novell RX-Net                               256 Bytes         |
  614.        | Novell RX-Net/2 -- SMC PS110                259 Bytes         |
  615.        | SMC Arcnet/Pure Data                        256 Bytes         |
  616.        |===============================================================|
  617.        | Other Protocols                                               |
  618.        | Novell NL1000 & NL/2 (AppleTalk)            108 Bytes         |
  619.        | Novell Star Intelligent NIC                 160 Bytes         |
  620.        | AT&T StarLAN                                103 Bytes         |
  621.        | Corvus Omninet                              162 Bytes         |
  622.        | IBM PC Cluster                             1044 Bytes         |
  623.        | IBM PCN (Original Adapter)                  606 Bytes         |
  624.        | IBM PCN II & Baseband                       696 Bytes         |
  625.        | Gateway Communications Inc. G/NET           241 Bytes         |
  626.        | Proteon ProNET-10 P1300/P1800               356 Bytes         |
  627.        | Generic NetBIOS                            1526 Bytes         |
  628.        | IBM Async (Com1/Com2)                      3203 Bytes         |
  629.        | Async WNIM                                 9942 Bytes         |
  630.        | Telebit P.E.P. Modem/WNIM                  9952 Bytes         |
  631.        |===============================================================|
  632.           
  633.           
  634.           
  635.           Page 9             Copyright 1990 by Novell, Inc., Provo, Utah
  636.           
  637.           
  638.           
  639.           
  640.        |===============================================================|
  641.        |                                                               |
  642.        |  Process Stacks:                                 7-11 KB      |
  643.        |                                                               |
  644.        |===============================================================|
  645.           
  646.           
  647.           
  648.           
  649.           There is a stack area allocated for each NetWare Server
  650.           process. Each of the stacks range from 80 to 1000 bytes. The
  651.           following are the stack space requirements for the NetWare
  652.           processes:
  653.           
  654.           
  655.           
  656.           
  657.        |===============================================================|
  658.        |                                                               |
  659.        | Standard Operating System processes:            7136 bytes    |
  660.        |                                                               |
  661.        | TTS Stack:                                       250 bytes    |
  662.        |                                                               |
  663.        | Print Spooler Stack:                             668 bytes    |
  664.        | (This is allocated once for                                   |
  665.        |  each port spooled in Netgen)                                 |
  666.        |                                                               |
  667.        |===============================================================|
  668.           
  669.           
  670.           
  671.           
  672.           Note that the print spooler stacks are created for a spooled
  673.           port that is defined in Netgen. Print servers and / or print
  674.           queues do not impact FSP allocation.
  675.           
  676.           
  677.           The only user configurable options for this component of
  678.           DGroup are loading TTS and configuring spooled ports in
  679.           Netgen.
  680.           
  681.           
  682.           
  683.           
  684.           
  685.           
  686.           
  687.           
  688.           
  689.           
  690.           
  691.           
  692.           
  693.           Page 10            Copyright 1990 by Novell, Inc., Provo, Utah
  694.           
  695.           
  696.           
  697.        |===============================================================|
  698.        |                                                               |
  699.        |  Volume & Monitor Tables:                        1-12 KB      |
  700.        |                                                               |
  701.        |===============================================================|
  702.           
  703.           
  704.           The Monitor table is used by the console to store information
  705.           required to display the Monitor screen. This table size is
  706.           fixed, not configurable.
  707.           
  708.           
  709.        |===============================================================|
  710.        |                                                               |
  711.        | Monitor Table Size:                              84 bytes     |
  712.        |                                                               |
  713.        |===============================================================|
  714.           
  715.           
  716.           The Volume table is used to maintain information on each of
  717.           the disk volumes mounted on the server. The size of memory
  718.           allocated for this table is dependent on the size of the
  719.           mounted volumes, as well as the amount of directory entries
  720.           allocated in Netgen. Therefore this is the user configurable
  721.           portion of this DGroup component.
  722.           
  723.           
  724.           Please note that mounted volume size is used for these tables
  725.           and therefore mirrored drives are not counted twice. The
  726.           following is the Volume table memory requirements:
  727.           
  728.           
  729.        |===============================================================|
  730.        |                                                               |
  731.        | For each volume mounted on the server:          84    bytes   |
  732.        |                                                               |
  733.        | For each MB of disk space mounted:               1.75 bytes   |
  734.        | (This number is rounded to                                    |
  735.        |  the next highest integer.)                                   |
  736.        |                                                               |
  737.        | For each 18 directory entries on all volumes:    1    byte    |
  738.        | (This number is rounded to                                    |
  739.        |  the next highest integer.)                                   |
  740.        |                                                               |
  741.        |===============================================================|
  742.           
  743.           
  744.           For example, if you had a server with only one volume (SYS:)
  745.           mounted, with a size of 145mb and 9600 directory entries, the
  746.           Volume and Monitor Tables would require (1*84) + (145*1.75) +
  747.           (9600/18) + 84 bytes of DGroup memory, or 956 bytes (rounded
  748.           up).
  749.           
  750.           
  751.           Page 11            Copyright 1990 by Novell, Inc., Provo, Utah
  752.           
  753.           
  754.           
  755.           
  756.        |===============================================================|
  757.        |                                                               |
  758.        |  Dynamic Memory Pool 1:                          16-21KB      |
  759.        |                                                               |
  760.        |===============================================================|
  761.           
  762.           
  763.           
  764.           
  765.           Dynamic Memory Pool 1 is used by virtually all NetWare
  766.           processes and routines as temporary workspace. Workspace from
  767.           2 to 1024 bytes, with 128 being the average, is allocated to a
  768.           NetWare process. It is then used then recovered upon
  769.           completion.
  770.           
  771.           
  772.           Additionally, there are several NetWare processes and routines
  773.           that hold memory allocated out of DMP 1, either on a semi-
  774.           permanent basis, or until the process or routine finishes. A
  775.           table of these semi-permanent DMP 1 allocations is included.
  776.           
  777.           
  778.           If there is no Dynamic Memory Pool 1 RAM available for a
  779.           process or routine, the workstation will likely display
  780.           "Network Error: out of dynamic workspace during <operation>",
  781.           where <operation> refers to the name of the DOS call that was
  782.           being tried. In some instances, with some versions of the OS,
  783.           running out of DMP 1 RAM can cause print jobs to either
  784.           disappear (until more DMP 1 RAM is freed) or be lost
  785.           completely. It has also been reported that under some earlier
  786.           versions of NetWare 286, running out of DMP 1 RAM can cause
  787.           the server to lock up without displaying an ABEND error
  788.           message.
  789.           
  790.           
  791.           Please note that references to Dynamic Workspace in an error
  792.           message can refer to the unavailability of RAM in either
  793.           Dynamic Memory Pools 1, 2 or 3. Use the FCONSOLE => Summary =>
  794.           Statistics screen to determine the exact memory pool involved.
  795.           
  796.           
  797.           Based upon the way in which DMP 1 is allocated, it is very
  798.           difficult to manipulate the size of this pool. Therefore the
  799.           major user configurable options for this DGroup component are
  800.           in the semi-permanent DMP 1 allocations.
  801.           
  802.           
  803.           
  804.           
  805.           
  806.           
  807.           
  808.           
  809.           Page 12            Copyright 1990 by Novell, Inc., Provo, Utah
  810.           
  811.           
  812.           
  813.           
  814.        |===============================================================|
  815.        |                                                               |
  816.        |       Semi-Permanent Dynamic Memory Pool 1 Allocations:       |
  817.        |                                                               |
  818.        |===============================================================|
  819.        |                                                               |
  820.        | Drive Mappings                  14 bytes per map assignment,  |
  821.        |                                    per workstation            |
  822.        |                                                               |
  823.        |*Additional Drive information    612 bytes per physical drive  |
  824.        |                                                               |
  825.        |*Process Control Blocks          28 bytes each (30 allocated   |
  826.        |                                    initially)                 |
  827.        |                                                               |
  828.        |*Semaphores                      6 bytes each (40 allocated    |
  829.        |                                    initially)                 |
  830.        |                                                               |
  831.        | Auto Remirror Queue             4 bytes per drive to be       |
  832.        |                                    remirrored                 |
  833.        |                                                               |
  834.        | Apple MAC file support          4 bytes per open MAC file     |
  835.        |                                                               |
  836.        | Workstation support             8 bytes per logged in         |
  837.        |                                    workstation                |
  838.        |                                                               |
  839.        |*Disk Storage Tracking Process   960 bytes (if Accounting is   |
  840.        |                                    enabled)                   |
  841.        |                                                               |
  842.        | Spool Queue entries             44 bytes per spooled print    |
  843.        |                                    job                        |
  844.        |                                                               |
  845.        | Queue Management System         28 bytes per queue            |
  846.        |                                                               |
  847.        | QMS Queue servers               5 bytes per queue server up   |
  848.        |                                    to a maximum of 25 queue   |
  849.        |                                    servers                    |
  850.        |                                                               |
  851.        |*Volume Names                    up to 16 bytes per mounted    |
  852.        |                                    volume                     |
  853.        |                                                               |
  854.        |*VAPs                            128 bytes per VAP, for stack  |
  855.        |                                    space                      |
  856.        |                                                               |
  857.        |===============================================================|
  858.           
  859.           
  860.           Please note that the DMP 1 allocations marked with an
  861.           asterisk* are, in practical terms, permanent allocations.
  862.           
  863.           
  864.           
  865.           
  866.           
  867.           Page 13            Copyright 1990 by Novell, Inc., Provo, Utah
  868.           
  869.           
  870.           
  871.           
  872.        |===============================================================|
  873.        |                                                               |
  874.        |  File Service Process Buffers:                   2-12 KB      |
  875.        |                                                               |
  876.        |===============================================================|
  877.           
  878.           
  879.           
  880.           
  881.           The File Service Process buffers are the buffers allocated in
  882.           DGroup for incoming File Service Request Packets. The number
  883.           of FSP buffers available directly determines how many FSPs
  884.           your server will have, in a one to one relationship. If you
  885.           have 4 FSP buffers available, then you will have 4 FSPs. The
  886.           maximum FSPs available for any server configuration is 10.
  887.           
  888.           
  889.           The following is the breakdown of memory requirements, for
  890.           each File Service Process buffer:
  891.           
  892.           
  893.        |===============================================================|
  894.        |                                                               |
  895.        | Reply buffer                                      94 bytes    |
  896.        | Workspace                                        106 bytes    |
  897.        | Stack space                                      768 bytes    |
  898.        | Receive buffer                              512-4096 bytes    |
  899.        |                                                               |
  900.        |===============================================================|
  901.           
  902.           
  903.           The total size of the FSP buffer is dependent upon the largest
  904.           packet size of any NIC Driver installed in the File Server.
  905.           The exact packet size constitutes the receive buffer portion
  906.           of the FSP buffer.
  907.           
  908.           
  909.           As an example, if you have configured an Ethernet driver with
  910.           a packet size of 1024 bytes, and an Arcnet driver using 4096
  911.           byte packets, then the FSP buffers for this server will be
  912.           5064 bytes, (4096 + 768 + 106 + 94). This provides ample
  913.           evidence that configuring a server with NIC drivers of varied
  914.           packet sizes can be very inefficient. If at all possible,
  915.           moving different NIC drivers to external bridges can remedy
  916.           this situation.
  917.           
  918.           
  919.           
  920.           
  921.           
  922.           
  923.           
  924.           
  925.           Page 14            Copyright 1990 by Novell, Inc., Provo, Utah
  926.           
  927.           
  928.           
  929.           Additional File Service Process Buffer RAM
  930.           ------------------------------------------
  931.           
  932.           
  933.        |===============================================================|
  934.        |                                                               |
  935.        | Additional Reply buffer                           94 bytes    |
  936.        | Memory Set aside for DMA workaround           0-4095 bytes    |
  937.        |                                                               |
  938.        |===============================================================|
  939.           
  940.           
  941.           Additionally, there is a one time allocation of a single
  942.           additional reply buffer of 94 bytes. Lastly, if any NIC driver
  943.           configured into the OS, supports DMA access, there may be
  944.           additional memory that will be set aside, (unused).
  945.           
  946.           
  947.           The problem is due to the fact that in some PCs, the DMA chip
  948.           cannot handle addresses correctly across physical 64K RAM
  949.           boundaries. Therefore, if the receive buffer of a FSP buffer
  950.           straddles a physical 64K RAM boundary, then the OS will skip
  951.           the memory (depending on the size of the receive buffer it
  952.           could be 0-4095 bytes) and not use it. This problem can be
  953.           erased by changing to a non-DMA NIC. It is also conceivable
  954.           that changing the Volume Tables can shift the data structures
  955.           enough to allow for no straddling. The following graphic
  956.           depicts this workaround.
  957.           
  958.           
  959.        |===============================================================|
  960.        |   ----------   |            |                                 |
  961.        |  |  Global  |  |            |                                 |
  962.        |  |  Static  |  |            |                                 |
  963.        |  |   Data   |  |            |                                 |
  964.        |   ----------   |  Physical  |                                 |
  965.        |  | Process  |  |            |                                 |
  966.        |  |  Stacks  |  |   Block    |                                 |
  967.        |   ----------   |            |                                 |
  968.        |  | Volume/  |  |    64K     |                                 |
  969.        |  | Monitor  |  |            |                                 |
  970.        |  | Tables   |  |    RAM     |                                 |
  971.        |   ----------   |            |                                 |
  972.        |  |  DMP 1   |  |            |          Unused RAM,            |
  973.        |   ---------- --|------------|--------\ skipped for DMA        |
  974.        |  |   FSP    |---============---------/ workaround, if less    |
  975.        |  | Buffers  |   ============           than a complete        |
  976.        |   ----------   |  Physical  |          receive buffer         |
  977.        |                |   Block    |                                 |
  978.        |                |    64K     |                                 |
  979.        |                |    RAM     |                                 |
  980.        |===============================================================|
  981.           
  982.           
  983.           Page 15            Copyright 1990 by Novell, Inc., Provo, Utah
  984.           
  985.           
  986.        |===============================================================|
  987.        |                                                               |
  988.        |       NIC Driver Packet and DGroup Buffer Sizes (bytes)       |
  989.        |                                                               |
  990.        |===============================================================|
  991.        |                                    Max.Packet  DGroup   H/W   |
  992.        |         NIC Driver                    Size     Buffer   DMA   |
  993.        |===============================================================|
  994.        | Ethernet                                                      |
  995.        | Novell Ethernet NE1000                1024      1992     No   |
  996.        | Novell Ethernet NE2000                1024      1992     No   |
  997.        | Novell Ethernet NE/2                  1024      1992     No   |
  998.        | Novell Ethernet NE2000 W/AppleTalk    1024      1992     No   |
  999.        | Novell Ethernet NE/2 W/AppleTalk      1024      1992     No   |
  1000.        | Micom-Interlan NP600                  1024      1992    Yes   |
  1001.        | 3Com 3C501 EtherLink                  1024      1992     No   |
  1002.        | 3Com 3C505 EtherLink Plus (2012)      1024      1992    Yes   |
  1003.        | 3Com 3C505 EtherLink Plus (1194)      1024      1992    Yes   |
  1004.        | 3Com 3C505 ELink Plus W/AppleTalk     1024      1992    Yes   |
  1005.        | 3Com 3C503 EtherLink II               1024      1992    Yes   |
  1006.        | 3Com 3C523 EtherLink/MC               1024      1992     No   |
  1007.        |===============================================================|
  1008.        | Token Ring                                                    |
  1009.        | IBM Token-Ring                        1024      1992     No   |
  1010.        | IBM Token-Ring Source Routing         1024      1992     No   |
  1011.        |===============================================================|
  1012.        | Arcnet                                                        |
  1013.        | Novell RX-Net                          512      1480     No   |
  1014.        | Novell RX-Net/2 -- SMC PS110           512      1480     No   |
  1015.        | SMC Arcnet/Pure Data                   512      1480     No   |
  1016.        |===============================================================|
  1017.        | Other Protocols                                               |
  1018.        | Novell NL1000 & NL/2 (AppleTalk)      1024      1992     No   |
  1019.        | Novell Star Intelligent NIC            512      1480     No   |
  1020.        | AT&T StarLAN                           512      1480     No   |
  1021.        | Corvus Omninet                         512      1480     No   |
  1022.        | IBM PC Cluster                         512      1480     No   |
  1023.        | IBM PCN (Original Adapter)            1024      1992    Yes   |
  1024.        | IBM PCN II & Baseband                 1024      1992     No   |
  1025.        | Gateway Communications Inc. G/NET     1024      1992     No   |
  1026.        | Proteon ProNET-10 P1300/P1800         1024      1992     No   |
  1027.        | Generic NetBIOS                       2048      3016     No   |
  1028.        | IBM Async (Com1/Com2)                  512      1480     No   |
  1029.        | Async WNIM                             512      1480     No   |
  1030.        | Telebit P.E.P. Modem/WNIM              512      1480     No   |
  1031.        |===============================================================|
  1032.           
  1033.           
  1034.           The following tables show various NIC Drivers and their Packet
  1035.           and FSP Buffer sizes, and whether or not they use DMA.
  1036.           Following tables will show the exact steps in allocating
  1037.           DGroup RAM, as well as the biggest impacters on DGroup RAM
  1038.           allocation and some steps for alleviating FSP shortages.
  1039.           
  1040.           
  1041.           Page 16            Copyright 1990 by Novell, Inc., Provo, Utah
  1042.           
  1043.           
  1044.           
  1045.        |===============================================================|
  1046.        |                                                               |
  1047.        |                DGroup RAM Allocation Process                  |
  1048.        |                                                               |
  1049.        |===============================================================|
  1050.        |                                                               |
  1051.        | The following is the step by step process of allocating       |
  1052.        | RAM in Dgroup:                                                |
  1053.        |                                                               |
  1054.        | 1) The OS first allocates the Global Static Data Area of      |
  1055.        |    DGroup. This includes OS, NIC, and Disk variables.         |
  1056.        |                                                               |
  1057.        | 2) The Process Stacks are allocated next.                     |
  1058.        |                                                               |
  1059.        | 3) The Volume and Monitor tables are next allocated.          |
  1060.        |                                                               |
  1061.        | 4) 16KB is set aside for Dynamic Memory Pool 1.               |
  1062.        |                                                               |
  1063.        | 5) The remaining DGroup RAM is used to set up File Service    |
  1064.        |    Process buffers.                                           |
  1065.        |                                                               |
  1066.        | 6) First 94 bytes is set aside as an additional reply buffer. |
  1067.        |                                                               |
  1068.        | 7) Next 0-4095 bytes may be set aside, (unused), if any       |
  1069.        |    installed NIC Driver supports DMA.                         |
  1070.        |                                                               |
  1071.        | 8) Then the remaining RAM is divided by the total FSP buffer  |
  1072.        |    size up to a maximum of 10.                                |
  1073.        |                                                               |
  1074.        | 9) The remainder DGroup RAM that could not be evenly made     |
  1075.        |    into a FSP buffer is added to Dynamic Memory Pool 1.       |
  1076.        |                                                               |
  1077.        |===============================================================|
  1078.           
  1079.           
  1080.           A server configured with a NE2000 NIC and a SMC Arcnet NIC,
  1081.           (using the Novell driver), would require a FSP buffer size of
  1082.           1992 which is the FSP buffer size of the larger packet size
  1083.           NIC, (the NE2000 has a 1024 byte packet size as opposed to the
  1084.           512 byte packet size of the Arcnet card).
  1085.           
  1086.           
  1087.           If after allocating all the prior DGroup data structures,
  1088.           there remained 7500 bytes of DGroup available for FSP buffers
  1089.           the allocation would be as follows: Subtract 94 bytes from the
  1090.           7500 for the one additional reply buffer, divide the remainder
  1091.           by the 1992 FSP buffer size, giving 3 FSP buffers and a
  1092.           remainder of 1430 to be added to Dynamic Memory Pool 1. The
  1093.           following is the computation:
  1094.           
  1095.           
  1096.           (7500 - 94) / 1992 = 3 with remainder of 1430
  1097.           
  1098.           
  1099.           Page 17            Copyright 1990 by Novell, Inc., Provo, Utah
  1100.           
  1101.           
  1102.           
  1103.           
  1104.           DGroup RAM Allocation Process (continued)
  1105.           -----------------------------------------
  1106.           
  1107.           
  1108.           
  1109.           
  1110.           Once understanding this process it becomes very easy to see
  1111.           how close any particular server is to gaining another FSP.
  1112.           
  1113.           
  1114.        |===============================================================|
  1115.        |                                                               |
  1116.        | 1) First, figure out the FSP buffer size.                     |
  1117.        |                                                               |
  1118.        | 2) Next take the Maximum RAM in Dynamic Memory Pool 1, and    |
  1119.        |    subtract it from 16384 bytes.                              |
  1120.        |    (the fixed size of DMP 1)                                  |
  1121.        |                                                               |
  1122.        | 3) Lastly subtract that difference from the FSP buffer size.  |
  1123.        |                                                               |
  1124.        |    That amount is how many bytes short that server            |
  1125.        |    configuration is from gaining an additional FSP.           |
  1126.        |                                                               |
  1127.        |===============================================================|
  1128.           
  1129.           
  1130.           For example, if the server configuration had a 1992 FSP buffer
  1131.           size, and the maximum DMP 1 was 16804, then you could figure
  1132.           out that in order to gain an additional FSP, you would have to
  1133.           free up an additional 1572 bytes of DGroup. The following is
  1134.           the computation:
  1135.           
  1136.           
  1137.           1992 - (16804 - 16384) = 1572
  1138.           
  1139.           
  1140.           Two solutions for this configuration, would be to remove three
  1141.           spooled printer ports, or reduce directory entries by 28296.
  1142.           Either of these would free up the necessary DGroup RAM.
  1143.           
  1144.           
  1145.           
  1146.           
  1147.           
  1148.           
  1149.           
  1150.           
  1151.           
  1152.           
  1153.           
  1154.           
  1155.           
  1156.           
  1157.           Page 18            Copyright 1990 by Novell, Inc., Provo, Utah
  1158.           
  1159.           
  1160.           
  1161.           
  1162.           Troubleshooting
  1163.           ---------------
  1164.           
  1165.           
  1166.           
  1167.           
  1168.        |===============================================================|
  1169.        |                                                               |
  1170.        |                       Troubleshooting                         |
  1171.        |                                                               |
  1172.        |===============================================================|
  1173.        |                                                               |
  1174.        |  The following are the biggest impacters on DGroup RAM        |
  1175.        |  allocation, in order of importance:                          |
  1176.        |                                                               |
  1177.        |===============================================================|
  1178.        |                                                               |
  1179.        | 1) NIC Driver Packet Size                                     |
  1180.        |                                                               |
  1181.        | 2) Amount of Disk space mounted and                           |
  1182.        |    Directory Entries allocated                                |
  1183.        |                                                               |
  1184.        | 3) LAN and Disk driver Global variables                       |
  1185.        |                                                               |
  1186.        | 4) Possible DMA compatibility allowances,                     |
  1187.        |    (if the NIC Driver uses DMA)                               |
  1188.        |                                                               |
  1189.        | 5) Spooled Ports defined in Netgen                            |
  1190.        |                                                               |
  1191.        | 6) TTS                                                        |
  1192.        |                                                               |
  1193.        |===============================================================|
  1194.           
  1195.           
  1196.           
  1197.           The following is the methodology used to define this list:
  1198.           
  1199.           
  1200.           1) The NIC Driver packet size has the most significant impact
  1201.              on the allocation of FSPs, due to the fact that this
  1202.              determines what divisor is used to allocate FSP buffers.
  1203.              The larger the packet size, the larger the FSP buffer, and
  1204.              the smaller the amount of FSPs.
  1205.           
  1206.           
  1207.           2) Larger disk configurations this can conceivably have the
  1208.              second largest impact on DGroup RAM allocation. Mounting a
  1209.              single volume of 2GB with 10,000 dir entries would
  1210.              require 13584 bytes of DGroup RAM alone.
  1211.           
  1212.           
  1213.           
  1214.           
  1215.           Page 19            Copyright 1990 by Novell, Inc., Provo, Utah
  1216.           
  1217.           
  1218.           
  1219.           
  1220.           Troubleshooting (continued)
  1221.           ---------------------------
  1222.           
  1223.           
  1224.           
  1225.           
  1226.           3) These NIC and Disk variables can be significant in size.
  1227.              The Async WNIM driver alone requires 9942 bytes of DGroup
  1228.              RAM.
  1229.           
  1230.           
  1231.           4) The maximum DGroup RAM lost to this workaround is 4095
  1232.              bytes.
  1233.           
  1234.           
  1235.           5) The maximum DGroup RAM that can be allocated to print
  1236.              spooler stacks is 3340 bytes.
  1237.           
  1238.           
  1239.           6) The TTS process stack uses 250 bytes of DGroup RAM. Also
  1240.              additional Global Static Data variables for TTS can run
  1241.              from 142 to 152 additional bytes.
  1242.           
  1243.           
  1244.           
  1245.           
  1246.           
  1247.           
  1248.           
  1249.           
  1250.           
  1251.           
  1252.           
  1253.           
  1254.           
  1255.           
  1256.           
  1257.           
  1258.           
  1259.           
  1260.           
  1261.           
  1262.           
  1263.           
  1264.           
  1265.           
  1266.           
  1267.           
  1268.           
  1269.           
  1270.           
  1271.           
  1272.           
  1273.           Page 20            Copyright 1990 by Novell, Inc., Provo, Utah
  1274.           
  1275.           
  1276.           
  1277.           
  1278.           Troubleshooting (continued)
  1279.           ---------------------------
  1280.           
  1281.           
  1282.           
  1283.           
  1284.        |===============================================================|
  1285.        |                                                               |
  1286.        |                DGroup RAM Management Methods                  |
  1287.        |                                                               |
  1288.        |===============================================================|
  1289.        |                                                               |
  1290.        | 1) Remove TTS (If Possible)                                   |
  1291.        |                                                               |
  1292.        | 2) Remove Printers in Netgen (Possibly to Print Servers)      |
  1293.        |                                                               |
  1294.        | 3) Decrease Directory Entries                                 |
  1295.        |                                                               |
  1296.        |    WARNING: Before decreasing directory entries, please read  |
  1297.        |             the Directory Entries information in the next     |
  1298.        |             section. If you incorrectly reduce your directory |
  1299.        |             entries, it is possible that you will lose files. |
  1300.        |                                                               |
  1301.        | 4) Change NIC Drivers to non-DMA ones                         |
  1302.        |    (If current drivers use DMA)                               |
  1303.        |                                                               |
  1304.        | 5) Decrease NIC Driver Packet size                            |
  1305.        |    (Or move large packet drivers to bridge)                   |
  1306.        |                                                               |
  1307.        | 6) Decrease Disk space                                        |
  1308.        |                                                               |
  1309.        | 7) Use Dynamic Memory Pool 1 patch for qualified servers      |
  1310.        |                                                               |
  1311.        |===============================================================|
  1312.           
  1313.           
  1314.           The order used in this list was an attempt to minimize the
  1315.           impact these changes would have on a given server. It goes
  1316.           without saying that some of these changes will be impossible
  1317.           for certain configurations. For example if you are using a TTS
  1318.           database system on your system, removing TTS does not become
  1319.           an option. Likewise removing spooled printers from your server
  1320.           may be prohibitive or impossible.
  1321.           
  1322.           
  1323.           
  1324.           
  1325.           
  1326.           
  1327.           
  1328.           
  1329.           
  1330.           
  1331.           Page 21            Copyright 1990 by Novell, Inc., Provo, Utah
  1332.           
  1333.           
  1334.           
  1335.           
  1336.           Directory Entries
  1337.           -----------------
  1338.           
  1339.           
  1340.           When a 286-based NetWare server sets up a directory entry
  1341.           block based upon the amount of directory entries defined in
  1342.           Netgen, it allocates that as one block. As directory entries
  1343.           are used up ( by files, directories, and trustee privileges ),
  1344.           the block is filled up more or less sequentially. As the
  1345.           directory entry block is filled, NetWare keeps track of the
  1346.           peak directory entry used. This is the highest number entry
  1347.           used in the directory entry block.
  1348.           
  1349.           
  1350.           However, directory entries are added sequentially only as long
  1351.           as prior directory entries are not deleted. When directory
  1352.           entries are deleted "holes" in the directory entry block are
  1353.           created that are filled by subsequent new directory entries.
  1354.           
  1355.           
  1356.        |===============================================================|
  1357.        |                                                               |
  1358.        |                         -----------                           |
  1359.        |       New Server       |           |                          |
  1360.        |       Directory        |           |                          |
  1361.        |       Entry Block      |   Used    |                          |
  1362.        |       -----------      |  Entries  |                          |
  1363.        |                        |           |                          |
  1364.        |                        |           |                          |
  1365.        |                    /---|-----------|--- Peak Directory        |
  1366.        |     Total         /    |           |    Entries Used          |
  1367.        |     Free      ---|     |   Free    |                          |
  1368.        |     Directory ---|     |  Entries  |                          |
  1369.        |     Entries       \    |           |                          |
  1370.        |                    \--- -----------                           |
  1371.        |                                                               |
  1372.        |   Used Server       -----------  -------------------          |
  1373.        |   Directory        |           |                    |         |
  1374.        |   Entry Block      |   Used    |                    |"Live"   |
  1375.        |   -----------      |           |                    | Block   |
  1376.        |                /---|-----------|--\  Deleted Files  |-of      |
  1377.        |              --    |   Free    |   - Directory      | Dir.    |
  1378.        |  Total      |  \---|-----------|--/  Entries        | Entries |
  1379.        |  Free      -|      |   Used    |                    |         |
  1380.        |  Directory -|  /---|-----------|--- Peak Directory--          |
  1381.        |  Entries    | /    |           |    Entries Used              |
  1382.        |              -     |   Free    |                              |
  1383.        |               \    |           |                              |
  1384.        |                \--- -----------                               |
  1385.        |                                                               |
  1386.        |===============================================================|
  1387.           
  1388.           
  1389.           Page 22            Copyright 1990 by Novell, Inc., Provo, Utah
  1390.           
  1391.           
  1392.           
  1393.           
  1394.           Directory Entries
  1395.           -----------------
  1396.           
  1397.           
  1398.           
  1399.           This directory entry block fragmentation is not defragmented
  1400.           either under NetWare, or after running VREPAIR. To compute the
  1401.           amount of directory block fragmentation perform the following
  1402.           steps:
  1403.           
  1404.           
  1405.           1) Pull up the FCONSOLE => Statistics => Volume Information =>
  1406.              (select a volume) screen.
  1407.           
  1408.           
  1409.           2) Take the Maximum Directory Entries number and subtract the
  1410.              Peak Directory Entries Used number from it. This is the
  1411.              number of free directory entries that can be safely
  1412.              manipulated via Netgen, without loss of files.
  1413.           
  1414.           
  1415.           3) Next take the Current Free Directory Entries number and
  1416.              subtract the number from (2) from it. This number is the
  1417.              amount of free directory entries that are inside your
  1418.              "live" block of directory entries. This number indicates
  1419.              how much fragmentation of your directory block exists. The
  1420.              higher proportion of free directory entries you have inside
  1421.              your "live" block of directory entries (the number from
  1422.              (3)) to the ones you have outside your "live" block (the
  1423.              number from (2)), represent a more fragmented directory
  1424.              block.
  1425.           
  1426.           
  1427.           When you down a server and run Netgen, in order to reduce
  1428.           directory entries, the directory entry block is simply
  1429.           truncated to the new number. Netgen does not check to see if
  1430.           directory entries that are about to be deleted, are in use. If
  1431.           you have a fragmented directory block, and you reduce the
  1432.           directory entry block based upon the amount of free directory
  1433.           entries you have available, it is entirely likely that you
  1434.           will be deleting directory entries that are in use.
  1435.           
  1436.           
  1437.           This will cause files, directories, and trustee privileges
  1438.           that were defined in those directory entries to be lost.
  1439.           Running VREPAIR will salvage the files and some of the
  1440.           directory structure, but will save most files in the root
  1441.           directory with names that are created by VREPAIR. These names
  1442.           are typically something like VF000000.000. For a more complete
  1443.           description of the operation of VREPAIR, consult section 8 in
  1444.           the SFT/Advanced NetWare 286 Maintenance manual.
  1445.           
  1446.           
  1447.           Page 23            Copyright 1990 by Novell, Inc., Provo, Utah
  1448.           
  1449.           
  1450.           
  1451.           
  1452.           Directory Entries
  1453.           -----------------
  1454.           
  1455.           
  1456.           The only safe number to use, in determining how much you can
  1457.           reduce your directory entries by, is your Peak Directory
  1458.           Entries Used number. You can reduce your total directory
  1459.           entries to near this number, without loss of files. Please
  1460.           note that you can quickly calculate if manipulating the
  1461.           directory entries will buy your server any FSPs. You should do
  1462.           this by checking your Maximum Directory Entries number against
  1463.           your Peak Directory Entries Used number. The difference
  1464.           between these two represent the amount of directory entries
  1465.           you can manipulate. You can then calculate if reducing this
  1466.           number can aid your FSP situation.
  1467.           
  1468.           
  1469.           If you recognize that you have a significant amount of
  1470.           directory block fragmentation, you can elect to defragment it
  1471.           using the following method:
  1472.           
  1473.           
  1474.           1) Make a complete backup of the volume(s) whose directory
  1475.              entry block you wish to defragment.
  1476.           
  1477.           
  1478.           2) Make note of how many directory entry blocks you have USED.
  1479.           
  1480.              Do this by rerunning FCONSOLE and selecting the Statistics
  1481.              => Volume Information => (select a volume) screen. Next
  1482.              take the amount of Maximum Directory Entries and subtract
  1483.              the number of Current Free Directory Entries, from it. This
  1484.              is the number of directory entries that you have used, and
  1485.              need in order to restore all of your volume.
  1486.           
  1487.              You should now calculate how many total directory entries
  1488.              you wish to have. If you do not have a set number in mind,
  1489.              taking this number of used directory entries and adding
  1490.              half again to it, is a good start. An example is that if
  1491.              you have used 6000 directory entries, allocating 9000 is a
  1492.              good start.
  1493.           
  1494.           
  1495.           3) Down the server and rerun Netgen.
  1496.           
  1497.           
  1498.           4) Reinitialize the selected volume(s).
  1499.           
  1500.           
  1501.           5) Reset the number of directory entries to the number you
  1502.              calculated you needed from (2).
  1503.           
  1504.           
  1505.           Page 24            Copyright 1990 by Novell, Inc., Provo, Utah
  1506.           
  1507.           
  1508.           
  1509.           
  1510.           Dynamic Memory Pool 1 Patch
  1511.           ---------------------------
  1512.           
  1513.           
  1514.           
  1515.           Finally, be aware that Novell has a patch fix for some FSP
  1516.           starved server configurations. This patch has been available
  1517.           through LANSWER technical support for qualified
  1518.           configurations. This is the only Novell supported method for
  1519.           distributing this patch. This patch also appears to be
  1520.           available from other sources in an unsupported fashion,
  1521.           however warnings should precede its use.
  1522.           
  1523.           
  1524.           The patch consists of three files, a general purpose debug
  1525.           type program called PATCH.EXE, a patch file to be used with
  1526.           the PATCH.EXE program, and a README file. The instructions for
  1527.           the PATCH program are listed on the following page. The basic
  1528.           way in which the patch program works is to take the patch
  1529.           instruction file and patch the specified file. The patch
  1530.           instruction file consists of three lines, a pattern line, an
  1531.           offset, and a patch line, in that order. The following is the
  1532.           Novell supplied patch instruction file called SERVPROC.
  1533.           
  1534.           
  1535.        |===============================================================|
  1536.        |                                                               |
  1537.        |        Novell Dynamic Memory Pool 1 Patch Instructions        |
  1538.        |                                                               |
  1539.        |===============================================================|
  1540.        |                                                               |
  1541.        |                         8B E0 05 00 1F                        |
  1542.        |                         4                                     |
  1543.        |                         08                                    |
  1544.        |                                                               |
  1545.        |===============================================================|
  1546.           
  1547.           
  1548.           This means that the patch program will search the specified file,
  1549.           (one of the OS .OBJ files), for the pattern 8B E0 05 00 1F, and
  1550.           will replace the byte 1F with 08. (You can read the PATCH program
  1551.           instructions for a further explanation of the PATCH program, by
  1552.           simply running the PATCH.EXE program without any parameters.)
  1553.           
  1554.           
  1555.           What this does is to change a portion of the fixed size of
  1556.           Dynamic Memory Pool 1. The 1F bytes represents a fixed size of
  1557.           this portion of DMP 1 of 7936 bytes or 1F00h. What the patch
  1558.           program then does is change that byte to 08 or 800h, or 2048
  1559.           bytes. This change means that DMP 1 will be reduced approximately
  1560.           5888 bytes or 5.75K. (7936 - 2048 = 5888)
  1561.           
  1562.           
  1563.           Page 25            Copyright 1990 by Novell, Inc., Provo, Utah
  1564.           
  1565.           
  1566.           
  1567.           
  1568.           Dynamic Memory Pool 1 Patch
  1569.           ---------------------------
  1570.           
  1571.           
  1572.           
  1573.           
  1574.           Understanding the operation of the patch can allow the number
  1575.           of bytes that DMP 1 is reduced by, to be changed. In other
  1576.           words you can use any value beginning at 1F and decreasing to
  1577.           00, in the patch line of the patch instruction file. This will
  1578.           decrease DMP 1 in 256 byte increments as follows:
  1579.           
  1580.           
  1581.           1E       Decrease DMP 1 by 256 bytes
  1582.           1D       Decrease DMP 1 by 512 bytes
  1583.           1C       Decrease DMP 1 by 768 bytes
  1584.           1B       Decrease DMP 1 by 1024 bytes
  1585.           ...
  1586.           08       Decrease DMP 1 by 5888 bytes
  1587.           ...
  1588.           00       Decrease DMP 1 by 7936 bytes
  1589.           
  1590.           
  1591.           Remember that in actuality, the hex number you are changing is
  1592.           the two digit hex number above followed by 00. In the first
  1593.           case you will be patching the number 1F00h (the original
  1594.           value) to 1E00h. Subtracting the two gets you the difference
  1595.           of 256 bytes. It is also conceivable that the patch can be
  1596.           used in this manner to increase the fixed size of this portion
  1597.           of DMP 1. You could increase this fixed size by using numbers
  1598.           greater than 1F. You would again be increasing this fixed size
  1599.           in 256 byte increments for every single number increment above
  1600.           1F.
  1601.           
  1602.           
  1603.           It is strongly recommended that you do not alter the patch
  1604.           line numbers in an effort to provide a quick fix to your
  1605.           server. If you have not performed the DGroup RAM calculations,
  1606.           and you do not know exactly what you are gaining in FSPs, and
  1607.           losing in DMP 1, you should not be altering the patch. You
  1608.           should also be aware that in some configurations, if you are
  1609.           not reducing DMP 1 by a at least one FSP buffer size, you will
  1610.           not be gaining any additional FSPs.
  1611.           
  1612.           
  1613.           
  1614.           
  1615.           
  1616.           
  1617.           
  1618.           
  1619.           
  1620.           
  1621.           Page 26            Copyright 1990 by Novell, Inc., Provo, Utah
  1622.           
  1623.           
  1624.           
  1625.           
  1626.           Dynamic Memory Pool 1 Patch
  1627.           ---------------------------
  1628.           
  1629.           
  1630.           
  1631.           
  1632.           The current patch value of 08 was arrived at because it will
  1633.           provide the following FSP gains in a minimum to maximum range
  1634.           of FSPs:
  1635.           
  1636.           
  1637.           512K Packet NIC Drivers            3-4 Additional FSPs
  1638.           1024K Packet NIC Drivers           2-3 Additional FSPs
  1639.           2048K Packet NIC Drivers           1-2 Additional FSPs
  1640.           4096K Packet NIC Drivers           1-2 Additional FSPs
  1641.           
  1642.           
  1643.           The warnings for use of this patch should be self evident by
  1644.           now. If you run short of Dynamic Memory Pool 1 you will get
  1645.           erratic and sometimes fatal behavior of your server. Also
  1646.           altering the patch numbers is not a guaranteed or supported
  1647.           function of the patch. These numbers and this explanation,
  1648.           were arrived at based upon understanding how the patch works,
  1649.           and then performing the calculations. If you feel the need to
  1650.           use the patch, you should use it as it is supplied.
  1651.           
  1652.           
  1653.           What LANSWER will do prior to sending a user the patch, is
  1654.           guarantee that the peak used of Dynamic Memory Pool 1 is at
  1655.           least 6K greater than the maximum allocated. If you receive
  1656.           the patch through other means you should, at the minimum,
  1657.           check those numbers yourself.
  1658.           
  1659.           
  1660.           Due to the nature of these types of fixes, ones which patch
  1661.           the operating system, it is always recommended that you try
  1662.           all prior means of curing a FSP starved server, before
  1663.           resorting to this type of patch.
  1664.           
  1665.           
  1666.           
  1667.           
  1668.           
  1669.           
  1670.           
  1671.           
  1672.           
  1673.           
  1674.           
  1675.           
  1676.           
  1677.           
  1678.           
  1679.           Page 27            Copyright 1990 by Novell, Inc., Provo, Utah
  1680.           
  1681.           
  1682.           
  1683.           
  1684.           Final Notes
  1685.           -----------
  1686.           
  1687.           
  1688.           
  1689.           
  1690.           286-Based NetWare v2.1x was designed along the principal of
  1691.           enhanced client server computing being the foundation of future
  1692.           computer networking. Therefore technologies such as a non-
  1693.           preemptive server OS, disk mirroring, transaction tracking, and
  1694.           hardware independence, all implemented with exceptional speed and
  1695.           security, formed the basis of the technology and design that went
  1696.           into 286-based NetWare. The fact that almost all other current
  1697.           network implementations are now borrowing heavily from these
  1698.           ideas, matter little. The additional fact that more and more
  1699.           users are placing larger amounts of computer resources into their
  1700.           NetWare LANs only reaffirms the sound concepts behind the design.
  1701.           However, as with any design, limitations define the playing
  1702.           field.
  1703.           
  1704.           
  1705.           One conclusion that can be drawn from this report is echoed on
  1706.           the final page of the SFT NetWare 286 In-Depth Product
  1707.           Definition:
  1708.           
  1709.           
  1710.           "*NOTE:   Maximums listed are individual limits. You will not be
  1711.                     able to use these specifications at maximum levels at
  1712.                     all times. You may have to purchase additional hardware
  1713.                     to achieve some of these maximums."
  1714.           
  1715.           
  1716.           After understanding the relationship between DGroup RAM
  1717.           allocation, the separate DGroup RAM components, and File Service
  1718.           Processes, it becomes evident that as an example, setting up an
  1719.           Advanced NetWare 286 server with 100 workstations, 2GB of disk
  1720.           space, and four NICs, becomes inadvisable if at all possible.
  1721.           Many of the limitations for this type of configuration can be
  1722.           largely attributed to many of the current hardware limitations.
  1723.           
  1724.           
  1725.           NetWare design technologies remain firmly focused at furthering
  1726.           network computing. NetWare 386 is the next logical design step.
  1727.           The fact is that NetWare 386 introduces a completely new memory
  1728.           scheme that renders all of the current discussion on FSP and
  1729.           DGroup limitations, academic. Using a completely dynamic memory
  1730.           and module management system, NetWare 386 is beginning to
  1731.           introduce a new set of features and technologies that will
  1732.           represent the new standard for computer networks. And as the next
  1733.           generation of computer hardware becomes available, we will find
  1734.           that NetWare 386 will be there, ready and waiting.
  1735.           
  1736.           
  1737.           Page 28            Copyright 1990 by Novell, Inc., Provo, Utah
  1738.  
  1739.